home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / msflogdump < prev    next >
Text File  |  2006-06-30  |  2KB  |  99 lines

  1. #!/usr/bin/perl
  2.  
  3. ##
  4. #         Name: msflogdump
  5. #       Author: spoonm <ninjatools [at] hush.com>
  6. #      Version: $Revision: 1.13 $
  7. #  Description: Simple utility to view log files created with msf
  8. #      License:
  9. #
  10. #      This file is part of the Metasploit Exploit Framework
  11. #      and is subject to the same licenses and copyrights as
  12. #      the rest of this package.
  13. #
  14. ##
  15.  
  16. use Getopt::Std;
  17. use strict;
  18. no utf8;
  19. no locale;
  20.  
  21. my $VERSION = '$Revision: 1.13 $';
  22.  
  23. my %opts;
  24. getopts('hv', \%opts);
  25.  
  26. Version() if($opts{'v'});
  27. if ($opts{'h'} || ! scalar(@ARGV)) {
  28.     Usage();
  29. }
  30.  
  31.  
  32. # heh, shokdial is good for something
  33. my $NORMAL = "\033[0m";
  34. my $BLUE   = "\033[34m";
  35. my $RED    = "\033[31m";
  36.  
  37. foreach my $filename (@ARGV) {
  38.   open(INFILE, "<$filename") or do { print STDOUT "Error opening $_: $!\n"; next; };
  39.  
  40.    my $printmode = 2; # this variable keeps track of what the last line printed was, 
  41.        # it is 0 if the line was from the client and 1 if it was from the server
  42.        # this value is used to only put a timestamp on the first of a series of lines
  43.        # from a given source.
  44.  
  45.   while(<INFILE>) {
  46.     s/\r//g;
  47.     chomp;
  48.  
  49.     if(/Socket(In|Out): ([^ ]+) ([^ ]+)/ig) {
  50.       my $in   = $1;
  51.       my $src  = $2;
  52.       my $dest = $3;
  53.       print "Socket$in: $BLUE$src$NORMAL -> $RED$dest$NORMAL\n";
  54.       print "-" x 60 . "\n" if($in eq 'Out');
  55.     }
  56.     elsif(/(.*?) CLIENT (.*)/ig) {
  57.       if ($printmode != 0) {
  58.          print '[' . localtime($1) . '] ' . $BLUE . HexToAscii($2) . $NORMAL;
  59.          $printmode = 0;
  60.       } else {
  61.          print $BLUE . HexToAscii($2) . $NORMAL . "\n";
  62.       }
  63.     
  64.     }
  65.     elsif(/(.*?) SERVER (.*)/ig) {
  66.       if ($printmode != 1) {
  67.         print '[' . localtime($1) . '] ' . $RED . HexToAscii($2) . $NORMAL;
  68.         $printmode = 1;
  69.       } else {
  70.         print $RED . HexToAscii($2) . $NORMAL . "\n";
  71.       }
  72.     }
  73.     else {
  74.       print $_ . "\n";
  75.     }
  76.   }
  77. }
  78.  
  79. sub HexToAscii {
  80.   my $hex = shift;
  81.   $hex =~ s/([0-9a-f]{2})/chr(hex($1))/egi;
  82.   return($hex);
  83. }
  84.  
  85. sub Usage {
  86.     print STDERR "\nUsage: $0 <~/.msf/logs/session_logfile_path.log>\n\n";
  87.     exit(0);
  88. }
  89.  
  90. sub Version {
  91.     my $ver = Pex::Utils::Rev2Ver($VERSION);
  92.     print STDERR qq{
  93.   Msflogdump Version:  $ver
  94.  
  95. };
  96.   exit(0);
  97. }
  98.  
  99.